www.gusucode.com > 落叶冰点万能企业网站内容管理系统 V9.1 > 落叶冰点万能企业网站内容管理系统 V9.1\code\inc\jpeg_draw.asp
<% '************************************************************** ' 新动软网站管理系统 ' 官方网站: http://www.aspcpu.com ' 系统作者: 阮丁远(网名:天下程序) ' Copyright 新动软网站管理系统 版权所有 '************************************************************** %> <% dir_set="../" %> <!--#include file=config.asp--> <!--#include file=conn.asp--> <% biao2="[ND_sys]" biao3="[ND_admin]" set rs22=server.CreateObject("adodb.recordset") rs22.open "select top 1 * from "&biao2&" where type='config_settings'",conn,1,1 if rs22.eof then shuiyin_on=0 shuiyin_cont="www.aspcpu.com" else ddd1=rs22("data") dddd12=split(ddd1,"|") '是否开启图片水印,0=不开启,1=开启 shuiyin_on=cstr(dddd12(0)) '图片水印文字 shuiyin_cont=cstr(dddd12(1)) end if '图片水印文字字体大小 shuiyin_z_size=21 '图片水印文字颜色 shuiyin_z_color=&Hf3344ff %> <% Class qswhImg dim aso Private Sub Class_Initialize set aso=CreateObject("Adodb.Stream") aso.Mode=3 aso.Type=1 aso.Open End Sub Private Sub Class_Terminate set aso=nothing End Sub Private Function Bin2Str(Bin) Dim I, Str For I=1 to LenB(Bin) clow=MidB(Bin,I,1) if ASCB(clow)<128 then Str = Str & Chr(ASCB(clow)) else I=I+1 if I <= LenB(Bin) then Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow)) end if Next Bin2Str = Str End Function Private Function Num2Str(num,base,lens) 'qiushuiwuhen (2002-8-12) dim ret ret = "" while(num>=base) ret = (num mod base) & ret num = (num - num mod base)/base wend Num2Str = right(string(lens,"0") & num & ret,lens) End Function Private Function Str2Num(str,base) 'qiushuiwuhen (2002-8-12) dim ret ret = 0 for i=1 to len(str) ret = ret *base + cint(mid(str,i,1)) next Str2Num=ret End Function Private Function BinVal(bin) 'qiushuiwuhen (2002-8-12) dim ret ret = 0 for i = lenb(bin) to 1 step -1 ret = ret *256 + ascb(midb(bin,i,1)) next BinVal=ret End Function Private Function BinVal2(bin) 'qiushuiwuhen (2002-8-12) dim ret ret = 0 for i = 1 to lenb(bin) ret = ret *256 + ascb(midb(bin,i,1)) next BinVal2=ret End Function Function getImageSize(filespec) 'qiushuiwuhen (2002-9-3) dim ret(3) aso.LoadFromFile(filespec) bFlag=aso.read(3) select case hex(binVal(bFlag)) case "4E5089": aso.read(15) ret(0)="PNG" ret(1)=BinVal2(aso.read(2)) aso.read(2) ret(2)=BinVal2(aso.read(2)) case "464947": aso.read(3) ret(0)="GIF" ret(1)=BinVal(aso.read(2)) ret(2)=BinVal(aso.read(2)) case "535746": aso.read(5) binData=aso.Read(1) sConv=Num2Str(ascb(binData),2 ,8) nBits=Str2Num(left(sConv,5),2) sConv=mid(sConv,6) while(len(sConv)<nBits*4) binData=aso.Read(1) sConv=sConv&Num2Str(ascb(binData),2 ,8) wend ret(0)="SWF" ret(1)=int(abs(Str2Num(mid(sConv,1*nBits+1,nBits),2)-Str2Num(mid(sConv,0*nBits+1,nBits),2))/20) ret(2)=int(abs(Str2Num(mid(sConv,3*nBits+1,nBits),2)-Str2Num(mid(sConv,2*nBits+1,nBits),2))/20) case "FFD8FF": do do: p1=binVal(aso.Read(1)): loop while p1=255 and not aso.EOS if p1>191 and p1<196 then exit do else aso.read(binval2(aso.Read(2))-2) do:p1=binVal(aso.Read(1)):loop while p1<255 and not aso.EOS loop while true aso.Read(3) ret(0)="JPG" ret(2)=binval2(aso.Read(2)) ret(1)=binval2(aso.Read(2)) case else: if left(Bin2Str(bFlag),2)="BM" then aso.Read(15) ret(0)="BMP" ret(1)=binval(aso.Read(4)) ret(2)=binval(aso.Read(4)) else ret(0)="" end if end select ret(3)="width=""" & ret(1) &""" height=""" & ret(2) &"""" getimagesize=ret End Function End Class function do_shuiying(SavefullPath) if shuiyin_on<>0 then 'SavefullPath="326151745wldn.jpg" '取得图片的宽度 Set qswh = new qswhImg arr = qswh.getImageSize(Server.Mappath(SavefullPath)) Set qswh = Nothing str_ImgWidth=arr(1) str_ImgHeight=arr(2) If Int(str_ImgWidth) > 600 Then str_ImgWidth = 600 Else str_ImgWidth = str_ImgWidth End If '加水印 If Int(str_ImgWidth) > 200 And Int(str_ImgHeight) > 75 Then LocalFile=Server.MapPath(SavefullPath) TargetFile=Server.MapPath(SavefullPath) on error resume next canjias=1 Dim Jpeg Set Jpeg = Server.CreateObject("Persits.Jpeg") If -2147221005=Err then canjias=0 ' Response.Write("<script language='javascript'>alert('没有这个组件,请安装!');history.back();</script>") '检查是否安装AspJpeg组件 'Response.End() End If Jpeg.Open (LocalFile) '打开图片 If err.number then canjias=0 'Response.Write("<script language='javascript'>alert('打开图片失败,请检查路径!');history.back();</script>") 'Response.End() End if if canjias=1 then Dim aa aa=Jpeg.Binary '将原始数据赋给aa '=========加文字水印================= Jpeg.Canvas.Font.Color = shuiyin_z_color '水印文字颜色 Jpeg.Canvas.Font.Family = Arial '字体 Jpeg.Canvas.Font.Bold = false '是否加粗 Jpeg.Canvas.Font.Size = shuiyin_z_size '字体大小 Jpeg.Canvas.Font.ShadowColor = &H000000 '阴影色彩 Jpeg.Canvas.Font.ShadowYOffset = 1 Jpeg.Canvas.Font.ShadowXOffset = 1 Jpeg.Canvas.Brush.Solid = True Jpeg.Canvas.Font.Quality = 10 ' '输出质量 ' Jpeg.Canvas.PrintText Jpeg.OriginalWidth/2-20,Jpeg.OriginalHeight-50,shuiyin_cont '水印位置及文字 Jpeg.Canvas.PrintText 1,Jpeg.OriginalHeight-50,shuiyin_cont '水印位置及文字 bb=Jpeg.Binary '将文字水印处理后的值赋给bb,这时,文字水印没有不透明度 '============调整文字透明度================ Set MyJpeg = Server.CreateObject("Persits.Jpeg") MyJpeg.OpenBinary aa Set Logo = Server.CreateObject("Persits.Jpeg") Logo.OpenBinary bb MyJpeg.DrawImage 0,0, Logo, 0.5 '0.3是透明度 cc=MyJpeg.Binary '将最终结果赋值给cc,这时也可以生成目标图片了 'Response.BinaryWrite cc '将二进输出给浏览器 MyJpeg.Save (TargetFile) set aa = nothing set bb = nothing set cc = nothing Jpeg.Close MyJpeg.Close Logo.Close end if End If '加水印 end if end function %>